package 面向对象_上.b类和对象;

import java.util.Scanner;

/*一、设计类，就是设计类的成员
* 属性 = 成员变量 = filed = 域，字段
* 方法 = 成员方法 = 函数 = method
*
* 创建类的对象 = 类的实例化 = 实例化类
*二、类和对象的使用
*   1.创建类、设计类的成员
*   2.创建类的对象
*   3.通过 “对象.属性” “对象.方法” 调用对象的结构
*
* 三、如果创建了一个类的多个对象，则每个对象都独立的拥有一趟属性（非static）
*   意味着，如果我们修改一个对象的属性a，则不会影响另外一个属性a的值。
*
* 四、对象的内存解析
* */
public class PersonTest {
    public static void main(String[] args) {
        //创建Person类的对象
        Person p1 = new Person();
//        Scanner scanner = new Scanner(System.in);

        //调用对象的结构、属性、方法
        p1.name = "张三";
        p1.isMale = true;
        System.out.println(p1.name);
        //调用方法
        p1.eat();
        p1.sleep();
        p1.talk("chinese");
//****************************************************
        Person p2 = new Person();
        System.out.println(p2.name);//null
//*******************************************************
//        Person p3 = new Person();
//        将p1变量保存的对象地址赋值给p3，导致p1和p3指向了堆空间的同一个对象实体。
        Person p3 = p1;
        p3.age = 10;
        System.out.println(p1.age);

    }
}

class Person{
    //属性：对应类中的成员变量
    String name;
    int age = 18;
    boolean isMale;

    //方法：对应类中成员方法
    public void eat(){
        System.out.println("人可以吃饭");
    }
    public void sleep(){
        System.out.println("人可以睡觉");
    }
    public void talk(String language){
        System.out.println("人可以说话：" + language);
    }
}
